#ifndef TERNA_H_
#define TERNA_H_

template <class T, class U, class V>
class terna{
	public:
		terna();
		terna(T x, U y, V z);
		T getFirst() const;
		U getSecond() const;
		V getThird() const;
		void setFirst(T first);
		void setSecond(U second);
		void setThird(V third);

	private:
		T first;
		U second;
		V third;
};

template <class T, class U, class V>
T terna<T, U, V>::getFirst() const{
    return first;
}

template <class T, class U, class V>
U terna<T, U, V>::getSecond() const
{
    return second;
}

template <class T, class U, class V>
V terna<T, U, V>::getThird() const
{
    return third;
}

template <class T, class U, class V>
void terna<T, U, V>::setFirst(T first)
{
    this->first = first;
}

template <class T, class U, class V>
void terna<T, U, V>::setSecond(U second)
{
    this->second = second;
}

template <class T, class U, class V>
void terna<T, U, V>::setThird(V third)
{
    this->third = third;
}

template <class T, class U, class V>
terna<T, U, V>::terna(){

}

template <class T, class U, class V>
terna<T, U, V>::terna(T x, U y, V z){
	first = x;
	second = y;
	third = z;
}


#endif /* TERNA_H_ */
